const { FusesPlugin } = require("@electron-forge/plugin-fuses");
const { FuseV1Options, FuseVersion } = require("@electron/fuses");

module.exports = {
  // 1. 项目基础信息（与 package.json 部分字段联动，优先级更高）
  packagerConfig: {
    asar: true,
    name: "MyElectronApp", // 应用名称（打包后安装包的名称）
    appVersion: "1.0.0", // 应用版本
    icon: "/public/logo", // 应用图标路径（无需后缀，Forge 会自动匹配不同平台的图标格式）
    // 打包时包含的额外文件（如静态资源、配置文件）
    extraResource: [],
  },
  rebuildConfig: {},
  // 3. 打包配置（生成不同平台的安装包格式）
  makers: [
    {
      name: "@electron-forge/maker-squirrel",
      config: {
        setupExe: "MyElectronApp-Setup.exe", // 安装程序文件名
        setupIcon: "/public/logo.ico", // 安装程序图标（Windows 需 .ico 格式）
      },
    },
    {
      name: "@electron-forge/maker-zip",
      platforms: ["darwin"],
    },
    {
      name: "@electron-forge/maker-deb",
      config: {},
    },
    {
      name: "@electron-forge/maker-rpm",
      config: {},
    },
  ],
  plugins: [
    {
      name: "@electron-forge/plugin-vite",
      config: {
        build: [
          {
            entry: "main/index.ts", // 主进程入口
            config: "vite.main.config.ts",
            target: "main",
          },
          {
            entry: "preload.ts", // 预加载脚本入口
            config: "vite.preload.config.ts",
            target: "preload",
          },
        ],
        renderer: [
          // 这里不用做修改
          {
            name: "main_window",
            config: "vite.renderer.config.ts",
          },
        ],
      },
    },
    // Fuses are used to enable/disable various Electron functionality
    // at package time, before code signing the application
    new FusesPlugin({
      version: FuseVersion.V1,
      [FuseV1Options.RunAsNode]: false,
      [FuseV1Options.EnableCookieEncryption]: true,
      [FuseV1Options.EnableNodeOptionsEnvironmentVariable]: false,
      [FuseV1Options.EnableNodeCliInspectArguments]: false,
      [FuseV1Options.EnableEmbeddedAsarIntegrityValidation]: true,
      [FuseV1Options.OnlyLoadAppFromAsar]: true,
    }),
  ],
  publishers: [
    {
      name: "@electron-forge/publisher-github",
      config: {
        repoOwner: "你的 GitHub 用户名", // 如 "username"
        repoName: "你的仓库名", // 如 "my-electron-app"
        releaseType: "release", // 发布类型（release：正式版；draft：草稿；prerelease：预发布）
        generateReleaseNotes: true, // 自动生成更新日志
      },
    },
  ],
};
